package Z06XianCheng.XC02XainChengFangfa;

import Z06XianCheng.XC01StartXianCheng.Hero;

public class TestThoud {}


class TestThread1 {
    public static void main(String[] args) {


        Hero gareen = new Hero();
        gareen.name = "盖伦";
        gareen.hp = 616;
        gareen.damage = 50;

        Hero teemo = new Hero();
        teemo.name = "提莫";
        teemo.hp = 300;
        teemo.damage = 30;

        Hero bh = new Hero();
        bh.name = "赏金猎人";
        bh.hp = 500;
        bh.damage = 65;

        Hero leesin = new Hero();
        leesin.name = "盲僧";
        leesin.hp = 455;
        leesin.damage = 80;

        Thread t1 = new Thread(){
            public void run(){
                while (!teemo.isDead()){
                    gareen.AttackHero(teemo);
                }
            }
        };

//        t1.start();
//        测试程序CPU资源抢占,注释
//        try {
//            t1.join();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        Thread t2 = new Thread(){
            public void run(){
                while(!leesin.isDead()){
                    bh.AttackHero(leesin);
                }
            }
        };
//        测试程序CPU资源抢占，注释
//        t2.start();


//        System.out.println("-------线程优先级--------------------------------------");
//        System.out.println("测试程序CPU资源抢占");
//        t1.setPriority(Thread.MAX_PRIORITY);
//        t2.setPriority(Thread.MIN_PRIORITY);
//        t1.start();
//        t2.start();

        // 测试其临时暂停
        Thread t3 = new Thread(){
            public void run(){
                while ((!teemo.isDead())){
                    // 临时暂停，使得t1可以占用CPU资源
                    Thread.yield();
                    bh.AttackHero(leesin);
                }
            }
        };

//        t1.setPriority(5);
//        t3.setPriority(5);
//        t1.start();
//        t2.start();

        Thread t4 = new Thread() {
            public void run() {
                int seconds = 0;
                // 守护线程的概念是： 当一个进程里，所有的线程都是守护线程的时候，结束当前进程。
                // 就好像一个公司有销售部，生产部这些和业务挂钩的部门。
                // 除此之外，还有后勤，行政等这些支持部门。
                // 如果一家公司销售部，生产部都解散了，那么只剩下后勤和行政，那么这家公司也可以解散了。
                // 守护线程就相当于那些支持部门，如果一个进程只剩下守护线程，那么进程就会自动结束。
                // 守护线程通常会被用来做日志，性能统计等工作。
                while (true) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.printf("已经玩了LOL %d 秒%n", seconds++);
                }
            }
        };
        t4.setDaemon(true);
        t4.start();
    }
}
